Indirect rendering is still required by the GLX specification so even the best direct rendering support still requires that indirect rendering be supported. SGI's OpenGL implementation treats indirect rendering as a special case of direct rendering.
Independently scheduled threads within the X server execute indirectly rendered OpenGL commands. A distinct thread is created for each X connection using OpenGL indirect rendering. This thread within the X server's address space executes the same OpenGL rendering code that direct renderers use and utilizes the same system support for direct rendering. One can think of the OpenGL rendering threads within the X server as proxies that execute OpenGL commands on behalf of an X client using indirect OpenGL rendering. The OpenGL rendering threads within the server only coordinate with the main X server thread to hand off commands to execute and return results. Otherwise, these threads do not manipulate any X server data structures. This technique is called multi-rendering and is discussed in greater detail in [10].